package com.gsafety.library.Utils;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Build;

import androidx.annotation.NonNull;

/**
 * 资源来自网络,收集大部分国产机型的设置允许自启动
 */
public class AutoStartUtils
{
    public static String ignoreBattery(Context context)
    {
        switch (Build.BRAND.toLowerCase())
        {
            case "huawei":
            case "honor":
                return goHuaweiSetting(context);
            case "xiaomi":
                return goXiaomiSetting(context);
            case "oppo":
                return goOPPOSetting(context);
            case "vivo":
                return goVIVOSetting(context);
            case "meizu":
                return goMeizuSetting(context);
            case "samsung":
                return goSamsungSetting(context);
            case "letv":
                return goLetvSetting(context);
            case "smartisan":
                return goSmartisanSetting(context);
            default:
                return "";
        }
    }

    /**
     * 跳转到指定应用的首页
     */
    private static void start(Context context, @NonNull String packageName)
    {
        Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
        context.startActivity(intent);
    }

    /**
     * 跳转到指定应用的指定页面
     */
    private static void start(Context context, @NonNull String packageName, @NonNull String activityDir)
    {
        Intent intent = new Intent();
        intent.setComponent(new ComponentName(packageName, activityDir));
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }


    /**
     * 华为手机管家的启动管理页
     *
     * @param context
     * @return 操作自启动的Tip
     */
    private static String goHuaweiSetting(Context context)
    {
        try
        {
            start(context, "com.huawei.systemmanager", "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity");
        } catch (Exception e)
        {
            start(context, "com.huawei.systemmanager", "com.huawei.systemmanager.optimize.bootstart.BootStartActivity");
        } finally
        {
            return "应用启动管理 -> 关闭应用开关 -> 打开允许自启动";
        }
    }

    /**
     * 小米安全中心的自启动管理页面
     *
     * @param context
     * @return 操作自启动的Tip
     */
    private static String goXiaomiSetting(Context context)
    {
        try
        {
            start(context, "com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity");
        } finally
        {
            return "授权管理 -> 自启动管理 -> 允许应用自启动";
        }
    }

    /**
     * OPPO 手机管家
     *
     * @param context
     * @return 操作自启动的Tip
     */
    private static String goOPPOSetting(Context context)
    {
        try
        {
            start(context, "com.coloros.phonemanager");
        } catch (Exception e1)
        {
            try
            {
                start(context, "com.oppo.safe");
            } catch (Exception e2)
            {
                try
                {
                    start(context, "com.coloros.oppoguardelf");
                } catch (Exception e3)
                {
                    start(context, "com.coloros.safecenter");
                }
            }
        } finally
        {
            return "权限隐私 -> 自启动管理 -> 允许应用自启动";
        }
    }


    /**
     * VIVO 手机管家
     *
     * @param context
     * @return 操作自启动的Tip
     */
    private static String goVIVOSetting(Context context)
    {
        try
        {
            start(context, "com.iqoo.secure");
        } finally
        {
            return "权限管理 -> 自启动 -> 允许应用自启动";
        }
    }

    /**
     * 魅族手机管家
     *
     * @param context
     * @return 操作自启动的Tip
     */
    private static String goMeizuSetting(Context context)
    {
        try
        {
            start(context, "com.meizu.safe");
        } finally
        {
            return "权限管理 -> 后台管理 -> 点击应用 -> 允许后台运行";
        }
    }


    /**
     * 三星智能管理器
     *
     * @param context
     * @return 操作自启动的Tip
     */
    private static String goSamsungSetting(Context context)
    {
        try
        {
            start(context, "com.samsung.android.sm_cn");
        } catch (Exception e)
        {
            start(context, "com.samsung.android.sm");
        } finally
        {
            return "自动运行应用程序 -> 打开应用开关 -> 电池管理 -> 未监视的应用程序 -> 添加应用";
        }
    }

    /**
     * 乐视手机管家
     *
     * @param context
     * @return 操作自启动的Tip
     */
    private static String goLetvSetting(Context context)
    {
        try
        {
            start(context, "com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity");
        } finally
        {
            return "自启动管理 -> 允许应用自启动";
        }
    }

    /**
     * 锤子手机管理
     *
     * @param context
     * @return 操作自启动的Tip
     */
    private static String goSmartisanSetting(Context context)
    {
        try
        {
            start(context, "com.smartisanos.security");
        } finally
        {
            return "权限管理 -> 自启动权限管理 -> 点击应用 -> 允许被系统启动";
        }
    }
}
